Badging API 讓 App 能夠顯示通知數字,不過通知數字的位置會依照平台的不同而有所差異。
Badging API (圖片來源: https://web-dev)
其實實作上蠻容易的,就是只要有 API 存在就可以設定,沒有則代表不行。
注意事項
跨瀏覽器支援的寫法,在前景透過程是直接叫用,就是先判斷有沒有這個 API 原則上有就是可以設定。
function setBadge(...args) {
  if (navigator.setAppBadge) {
    navigator.setAppBadge(...args);
  } else if (navigator.setExperimentalAppBadge) {
    navigator.setExperimentalAppBadge(...args);
  } else if (window.ExperimentalBadge) {
    window.ExperimentalBadge.set(...args);
  }
}
function clearBadge() {
  if (navigator.clearAppBadge) {
    navigator.clearAppBadge();
  } else if (navigator.clearExperimentalAppBadge) {
    navigator.clearExperimentalAppBadge();
  } else if (window.ExperimentalBadge) {
    window.ExperimentalBadge.clear();
  }
}
透過 Service Worker,也是一樣先進行判斷後直接叫用,有就可以設定。
let requestCounter = 0;
self.addEventListener('fetch', function(e) {
  if ('setAppBadge' in navigator) {
    navigator.setAppBadge(++requestCounter);
  }
  console.log('[Service Worker] Fetch', e.request.url);
  e.respondWith(fetch(e.request));
});